]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shell-global: Add 'force-animations' property
authorJonas Ådahl <jadahl@gmail.com>
Tue, 29 Nov 2022 15:26:46 +0000 (16:26 +0100)
committerJonas Ådahl <jadahl@gmail.com>
Tue, 29 Nov 2022 16:52:56 +0000 (17:52 +0100)
Set via a command line argument to gnome-shell. Will allow enabling
animations despite e.g. lack of hardware acceleration otherwise
inhibiting it.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2560>

src/main.c
src/shell-global.c

index 9913bbccbd9cb8032df9fe53bcd1f777938b440f..5e5c207516da590e619fa297ffd5de4947f4e3f3 100644 (file)
@@ -39,6 +39,7 @@ extern GType gnome_shell_plugin_get_type (void);
 static gboolean is_gdm_mode = FALSE;
 static char *session_mode = NULL;
 static int caught_signal = 0;
+static gboolean force_animations = FALSE;
 
 #define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1
 #define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4
@@ -530,6 +531,12 @@ GOptionEntry gnome_shell_options[] = {
     N_("List possible modes"),
     NULL
   },
+  {
+    "force-animations", 0, G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE,
+    &force_animations,
+    N_("Force animations to be enabled"),
+    NULL
+  },
   { NULL }
 };
 
@@ -632,7 +639,9 @@ main (int argc, char **argv)
   if (session_mode == NULL)
     session_mode = is_gdm_mode ? (char *)"gdm" : (char *)"user";
 
-  _shell_global_init ("session-mode", session_mode, NULL);
+  _shell_global_init ("session-mode", session_mode,
+                      "force-animations", force_animations,
+                      NULL);
 
   dump_gjs_stack_on_signal (SIGABRT);
   dump_gjs_stack_on_signal (SIGFPE);
index 365e387f0a3d45e773e7be59254ef9d0f7e67003..61742ee46566045ce135871060f58ef2c3ff176b 100644 (file)
@@ -85,6 +85,8 @@ struct _ShellGlobal {
 
   GDBusProxy *switcheroo_control;
   GCancellable *switcheroo_cancellable;
+
+  gboolean force_animations;
 };
 
 enum {
@@ -109,6 +111,7 @@ enum {
   PROP_FRAME_TIMESTAMPS,
   PROP_FRAME_FINISH_TIMESTAMP,
   PROP_SWITCHEROO_CONTROL,
+  PROP_FORCE_ANIMATIONS,
 
   N_PROPS
 };
@@ -235,6 +238,9 @@ shell_global_set_property(GObject         *object,
           }
       }
       break;
+    case PROP_FORCE_ANIMATIONS:
+      global->force_animations = g_value_get_boolean (value);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -318,6 +324,9 @@ shell_global_get_property(GObject         *object,
     case PROP_SWITCHEROO_CONTROL:
       g_value_set_object (value, global->switcheroo_control);
       break;
+    case PROP_FORCE_ANIMATIONS:
+      g_value_set_boolean (value, global->force_animations);
+      break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -649,6 +658,13 @@ shell_global_class_init (ShellGlobalClass *klass)
                          G_TYPE_DBUS_PROXY,
                          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
 
+  props[PROP_FORCE_ANIMATIONS] =
+    g_param_spec_boolean ("force-animations",
+                          "force-animations",
+                          "Force animations to be enabled",
+                          FALSE,
+                          G_PARAM_READWRITE  | G_PARAM_CONSTRUCT| G_PARAM_STATIC_STRINGS);
+
   g_object_class_install_properties (gobject_class, N_PROPS, props);
 }